package org.dromara.xxmj.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.xxmj.domain.dto.CourseQueryDto;
import org.dromara.xxmj.domain.vo.*;

import java.util.List;

/**
 * 课程服务接口
 *
 * @author Vincent
 */
public interface ICourseService {

    /**
     * 获取课程列表
     *
     * @param dto 查询条件
     * @param pageQuery 分页参数
     * @return 课程列表
     */
    TableDataInfo<CourseListVO> listCourse(CourseQueryDto dto, PageQuery pageQuery);

    /**
     * 获取课程详情
     *
     * @param id 课程ID
     * @return 课程详情
     */
    CourseDetailVo getCourseDetail(Long id);

    /**
     * 获取用户已购买的课程列表
     *
     * @param query 查询条件
     * @param pageQuery 分页参数
     * @return 课程列表
     */
    TableDataInfo<CourseMyOrderVO> listUserCourse(CourseQueryDto query, PageQuery pageQuery);

    /**
     * 检查用户是否已购买课程
     *
     * @param courseId 课程ID
     * @return 是否已购买
     */
    Boolean checkUserPurchased(Long courseId);

    /**
     * 获取用户课程学习进度
     *
     * @param courseId 课程ID
     * @return 学习进度（百分比）
     */
    Integer getUserCourseProgress(Long courseId);

    /**
     * 获取课程章节列表
     *
     * @param courseId 课程ID
     * @return 章节列表
     */
    List<CourseChapterVo> getCourseChapters(Long courseId);
}
